-- ============================================= -- Author:张登山 -- Create date: 2010-12-15 -- Description: 供HIS调用,参数依次为影像号,姓名,性别,生日,RIS号,设备类型,检查部位,设备AET,英文名字,病理号、业务范围 -- ============================================= ALTER PROCEDURE [dbo].[SET_LOGIN_INFO] @PATIENTID nvarchar(50), @NAME nvarchar(50), @SEX nvarchar(10), @BIRTHDAY nvarchar(50), @ACCESSIONNUMBER nvarchar(20), @MODALITY nvarchar(10), @BODYPARTEXAMINED nvarchar(500), @AETITLE nvarchar(20) , @OtName nvarchar(50) = '', @ClinicNo nvarchar(40) = '', @ACF01 tinyint = 1, @PatWeight numeric(12,2)=0, @PatHeight numeric(12,2)=0 AS BEGIN declare @StudyUID NVARCHAR(100) declare @StudyID INT DECLARE @ExtentModality NVARCHAR(50) SET @ExtentModality=@MODALITY+'E' SET @StudyID= CONVERT(INTEGER,@ACCESSIONNUMBER) --CAST(@PATIENTID as int) SET @StudyUID='1.2.840.10008.9999.9'+@ACCESSIONNUMBER DECLARE @BIRTHDAY1 SMALLDATETIME if @BIRTHDAY<='1899-12-30' SET @BIRTHDAY1=getdate() else SET @BIRTHDAY1= CAST(@BIRTHDAY AS SMALLDATETIME) declare @StudyAge nvarchar(50) declare @nIntV int set @nIntV=datediff(year,@BIRTHDAY1,GetDate()) if @nIntV>0 set @StudyAge= CAST(@nIntV AS nvarchar(20))+'岁' else begin set @nIntV=datediff(MONTH,@BIRTHDAY1,GetDate()) if @nIntV>0 set @StudyAge= CAST(@nIntV AS nvarchar(20))+'月' else begin set @nIntV=datediff(DAY,@BIRTHDAY1,GetDate()) if @nIntV<0 set @nIntV=0 set @StudyAge= CAST(@nIntV AS nvarchar(20))+'天' end end if @SEX = 'M' set @SEX = '男' else if @SEX = 'F' set @SEX = '女' else if @Sex='O' set @SEX ='未知' if exists(select * from Study where PatientID = @PATIENTID and StudyID <> @StudyID) begin declare @autoStudyid int select @autoStudyid = StudyID from Study where PatientID = @PATIENTID and StudyID <> @StudyID update Study set StudyID = @StudyID where PatientID = @PATIENTID and StudyID <> @StudyID update series set StudyID = @StudyID where StudyID = @autoStudyid update worklist set ObjId = @StudyID where PatientID = @PATIENTID and ObjId <> @StudyID return 0 end IF NOT EXISTS( SELECT * FROM PATIENT WHERE PATIENTID=@PATIENTID) BEGIN INSERT INTO PATIENT(PATIENTID,NAME,OTHERNAME,SEX,BIRTHDAY) VALUES(@PATIENTID,@NAME,@OtName,@SEX,@BIRTHDAY1) END ELSE BEGIN UPDATE PATIENT SET NAME=@NAME,OTHERNAME=@OtName,SEX=@SEX,BIRTHDAY=@BIRTHDAY1 WHERE PATIENTID=@PATIENTID END IF NOT EXISTS( SELECT * FROM STUDY WHERE STUDYID=@STUDYID) BEGIN --delete from STUDY where StudyInstanceUI=@StudyUID INSERT INTO STUDY(STUDYID,PATIENTID,MEDICALID,STUDYAGE,ACCESSIONNUMBER,MODALITY, BODYPARTEXAMINED, ScheduledStudyLocationAETitle , StudyInstanceUID,STUDYDATE,HospitalizedNo,ClinicNo,PatientHeight,PatientWeight) VALUES(@STUDYID,@PATIENTID,@ACCESSIONNUMBER,@StudyAge,@ACCESSIONNUMBER,@MODALITY,@BODYPARTEXAMINED,@AETITLE,@StudyUID,GETDATE() ,case when @ACF01 = 2 then @ClinicNo else '' end,case when @ACF01 = 2 then '' else @ClinicNo end,@PatHeight,@PatWeight) DECLARE @OLDSTUDYID INT SET @OLDSTUDYID=0 SELECT @OLDSTUDYID=STUDYID FROM STUDY WHERE PATIENTID=@PATIENTID AND Modality=@ExtentModality IF @OLDSTUDYID>0 BEGIN UPDATE SERIES SET STUDYID=@StudyID WHERE STUDYID=@OLDSTUDYID DELETE FROM STUDY WHERE STUDYID=@OLDSTUDYID END END ELSE BEGIN UPDATE STUDY SET PATIENTID=@PATIENTID,MEDICALID=@ACCESSIONNUMBER,STUDYAGE=@StudyAge,ACCESSIONNUMBER=@ACCESSIONNUMBER,MODALITY=@MODALITY, BODYPARTEXAMINED=@BODYPARTEXAMINED, ScheduledStudyLocationAETitle=@AETITLE,STUDYDATE=GETDATE() ,HospitalizedNo=case when @ACF01 = 2 then @ClinicNo else '' end ,ClinicNo = case when @ACF01 = 2 then '' else @ClinicNo end ,PatientHeight=@PatHeight,PatientWeight=@PatWeight WHERE StudyID=@StudyID END IF NOT EXISTS( SELECT * FROM WORKLIST WHERE OBJID=@ACCESSIONNUMBER) BEGIN INSERT INTO WORKLIST(OBJID,OBJTYPE,PATIENTID,NAME,BIRTHDAY,SEX,MEDICALID,STATE,MODALITY)VALUES(@ACCESSIONNUMBER,'1',@PATIENTID,@NAME,@BIRTHDAY1,@SEX,@ACCESSIONNUMBER,50,@MODALITY) END ELSE BEGIN UPDATE WORKLIST SET PATIENTID=@PATIENTID,NAME=@NAME,BIRTHDAY=@BIRTHDAY1,SEX=@SEX,MEDICALID=@ACCESSIONNUMBER,MODALITY=@MODALITY WHERE OBJID=@ACCESSIONNUMBER END END